#########################################################
# 参数：
# arr: 一个数组
# start_index: 搜索的起点索引
# 返回值：
# 最后一个与arr[start_index]的值相等的元素索引
# 例: 如果arr = [6,6,7,7,7]，则find_last_of(arr, 2) == 4
#########################################################
def find_last_of(arr, start_index):
    if start_index >= len(arr):
        return -1
    s = start_index - 1
    for i in range(start_index,len(arr)):
        if arr[i] != arr[start_index]:
            return int(s)
        else:
            s += 1
#        print("s",s)

#########################################################
# 参数：
# arr: 一个数组
# 返回值：
# 在find_last_of的帮助下返回一个压缩列表
# 例: 如果arr = [6, 6, 10, 7, 7, 7]，则compress(arr) == [[2, 6], 10, [3, 7]]
#########################################################

def delall(arr):
    while len(arr) > 0:
        arr.pop()

def compress(arr):
    lst = []
    flst = []
    i = 0
    while True:
        s = find_last_of(arr,i)
        if s == -1:
            break
        if s == i:
            l = 1
        else:
            l = s - i + 1
        print("l:",l)
        if l >= 1:
            lst.append(l)
            lst.append(arr[i])
            flst.append(lst[:])
            delall(lst)
        else:
            flst.append(arr[i])
        i = s + 1
        print("s:",s)
        print("i:",i)
    return flst[:]

string = '1122334567775443'
a = [int(c) for c in string]
print(a)
#print("flo",find_last_of(a,2))
b = compress(a)
print(b)
